Modern microcomputer systems typically have provisions for expanding internal memory. For example, it is common to have "expansion slots" within the chassis of a microcomputer into which memory boards may be inserted. Such memory boards are typically a printed circuit card populated with an array of semiconductor memory chips. In order for the central processing unit (CPU) of the microcomputer to store and retrieve data in such an expandable memory, the CPU must know the total size of the memory available. Furthermore, the total memory space must be configured such that there are no addressing ambiguities.
In most microcomputer systems with expandable memories, a set of switches internal to the computer must be set to indicate the memory size whenever memory modules are inserted or removed. It is not uncommon for a technician to forget to set the switches when changing the memory size or to place such switches in the wrong positions. In either case, the CPU receives erroneous information as to the memory size and, consequently, the computer will be unable to properly address the memory. Another problem is that a customer may install a memory card, improperly set the switches and never obtain the benefits of the extra memory capacity.
In certain other systems, the CPU senses the presence of a memory module. This is typically limited to determining whether or not a predetermined memory option has been installed. Such systems are not capable of accommodating memory modules of arbitrary size that may be inserted in any one or more of several slots.
As will be subsequently described, the present invention provides a fully self configuring memory in which memory modules of various storage capacities may be inserted in any one or more of several expansion slots. Signals passed between the CPU and the memory modules inform the memory modules of their proper starting address.